package jianzhi; /**
 * description:
 * author:张腾
 * date:2021-06-30
 */

/**
 * 写一个函数 StrToInt，实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。
 */
public class jianzhi67 {
    public int strToInt(String str) {
        char[] c = str.trim().toCharArray();
        if (c.length==0) return 0;
        //bndry表示int最大数除最后一位之外的数
        int res = 0, bndry = Integer.MAX_VALUE/10;
        int i = 1,sign = 1;
        //符号位是负数，则sign为-1
        if (c[0]=='-') sign=-1;
        //无符号 默认表示为正数sign=1 数字即从第一位开始
        else if (c[0]!='+') i=0;

        for (int j = i; j < c.length; j++) {
            //不是数字
            if (c[j]<'0' || c[j]>'9') break;
            //int最大数最后一位是7
            //如果现有的数已经大于bndry 说明不管现在这一位是什么都已越界 如果现有的数等于 且当前数字大于int最大数的最后一位 同样越界
            if (res>bndry || res==bndry&&c[j]>'7') return sign==-1? Integer.MIN_VALUE:Integer.MAX_VALUE;

            res = res*10+(c[j]-'0');
        }
        return sign*res;
    }
}
